﻿using CNFM_CROCODILE_LOGO.Core.Domain.Current;
using CNFM_CROCODILE_LOGO.Core.Domain.ViewModels;
using System;
using System.Collections.Generic;
using System.Text;

namespace CNFM_CROCODILE_LOGO.Services.Interfaces
{
    /// <summary>
    /// 基础管理接口
    /// </summary>
    public interface IBasicServices
    {
        #region 用户管理
        /// <summary>
        /// 用户列表
        /// </summary>
        /// <param name="index"></param>
        /// <param name="size"></param>
        /// <param name="areUnCode">地区编码</param>
        /// <param name="type">用户类型</param>
        /// <param name="sasearch">模糊条件</param>
        /// <returns></returns>
        PaginationModel GetCrocodileUserAll(int index, int size, string areUnCode, string type, string sasearch);

        /// <summary>
        /// 用户详情
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        ReturnValueModel GetCrocodileUser(string userId);

        /// <summary>
        /// 用户新增修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel AddUpdateCrocodileUser(CrocodileUserModels model);

        /// <summary>
        /// 企业开户 
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel AddEnterprise(CrocodileUserModels model);

        /// <summary>
        /// 用户停用
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        ReturnValueModel DelectCrocodileUser(string userId);

        /// <summary>
        /// 用户授权
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="roId"></param>
        /// <returns></returns>
        ReturnValueModel UserAuthorization(string userId, string roId);
        #endregion

        #region 数据字典
        /// <summary>
        /// 数据字典列表
        /// </summary>
        /// <param name="index"></param>
        /// <param name="size"></param>
        /// <param name="sasearch"></param>
        /// <returns></returns>
        PaginationModel GetDictionaryAll(int index, int size, string sasearch);
        /// <summary>
        /// 数据字典详情
        /// </summary>
        /// <param name="dictionaryId"></param>
        /// <returns></returns>
        ReturnValueModel GetDictionary(string dictionaryId);
        /// <summary>
        /// 数据字典新增修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel AddUpdateDictionary(DictionaryModels model);
        /// <summary>
        /// 数据字典停用
        /// </summary>
        /// <param name="dictionaryId"></param>
        /// <returns></returns>
        ReturnValueModel DelectDictionary(string dictionaryId);
        /// <summary>
        /// 数据字典类型列表
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        ReturnValueModel GetDictionaryList(string type);
        #endregion

        #region 角色
        /// <summary>
        /// 角色列表
        /// </summary>
        /// <param name="index"></param>
        /// <param name="size"></param>
        /// <param name="sasearch"></param>
        /// <returns></returns>
        PaginationModel GetRoleAll(int index, int size, string sasearch);
        /// <summary>
        /// 角色详情
        /// </summary>
        /// <param name="roleId"></param>
        /// <returns></returns>
        ReturnValueModel GetRole(string roleId);
        /// <summary>
        /// 角色新增修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel AddUpdateRole(RoleModels model);
        /// <summary>
        /// 角色停用
        /// </summary>
        /// <param name="roleId"></param>
        /// <returns></returns>
        ReturnValueModel DelectRole(string roleId);
        /// <summary>
        /// 角色选择
        /// </summary>
        /// <returns></returns>
        ReturnValueModel GetRoleSelect();
        #endregion

        #region 企业管理
        /// <summary>
        /// 企业列表
        /// </summary>
        /// <param name="index"></param>
        /// <param name="size"></param>
        /// <param name="sasearch"></param>
        /// <returns></returns>
        PaginationModel GetEnterpriseAll(int index, int size, string unCode, string sasearch,string enterpriseId);
        /// <summary>
        /// 企业详情列表
        /// </summary>
        /// <param name="index"></param>
        /// <param name="size"></param>
        /// <returns></returns>
        PaginationModel GetEnterprisesAll(int index, int size, string id);
        /// <summary>
        /// 企业详情
        /// </summary>
        /// <param name="enterpriseId"></param>
        /// <returns></returns>
        ReturnValueModel GetEnterprise(string enterpriseId);
        /// <summary>
        /// 企业新增修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel AddUpdateEnterprise(EnterpriseModels model);
        /// <summary>
        /// 企业停用
        /// </summary>
        /// <param name="enterpriseId"></param>
        /// <returns></returns>
        ReturnValueModel DelectEnterprise(string enterpriseId);
        /// <summary>
        /// 企业选择列表
        /// </summary>
        /// <param name="areCode"></param>
        /// <returns></returns>
        ReturnValueModel GetEnterpriseTree(string areCode);
        /// <summary>
        /// 企业媒体文件上传
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel AddUpdateEnterPriseImage(MediaImageModels model);
        /// <summary>
        /// 企业宣传资料上传
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel AddEnterPrisePropaganda(MediaImageModels model);
        /// <summary>
        /// 企业宣传资料查询
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ReturnValueModel GetEnterPrisePropagandaAll(string id);
        /// <summary>
        /// 企业宣传文件删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ReturnValueModel DeleteEnterPrisePropaganda(string id);
        #endregion

        #region 地区管理
        /// <summary>
        /// 地区树
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        object GetAreaTreeAll(string name);

        /// <summary>
        /// 地区列表
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        PaginationModel GetAreaAll(string code);

        /// <summary>
        /// 省市区联动
        /// </summary>
        /// <param name="lev"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        ReturnValueModel GetAreaSelectAll(int lev, string name);
        #endregion

        #region 产品管理
        /// <summary>
        /// 产品列表
        /// </summary>
        /// <param name="index"></param>
        /// <param name="size"></param>
        /// <param name="sasearch"></param>
        /// <returns></returns>
        PaginationModel GetSpeciesManageAll(int index, int size, string sasearch);
        /// <summary>
        /// 产品详情
        /// </summary>
        /// <param name="speciesId"></param>
        /// <returns></returns>
        ReturnValueModel GetSpeciesManage(string speciesId);
        /// <summary>
        /// 产品新增修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel AddUpdateSpeciesManage(SpeciesManageModels model);
        /// <summary>
        /// 产品删除
        /// </summary>
        /// <param name="speciesId"></param>
        /// <returns></returns>
        ReturnValueModel DelectSpeciesManage(string speciesId);
        /// <summary>
        /// 产品列表
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        ReturnValueModel GetSpeciesManageTree(string type);
        #endregion

        #region 菜单管理 
        /// <summary>
        ///  菜单列表
        /// </summary>
        /// <param name="index"></param>
        /// <param name="size"></param>
        /// <param name="sasearch"></param>
        /// <returns></returns>
        PaginationModel GetMenuAll(int index, int size, string sasearch);
        /// <summary>
        /// 菜单详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ReturnValueModel GetMenu(string id);
        /// <summary>
        /// 菜单新增
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel AddUpdateMenuAll(MenuModels model);
        /// <summary>
        /// 菜单删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ReturnValueModel DeleteMenu(string id);
        /// <summary>
        /// 角色菜单列表
        /// </summary>
        /// <param name="roleid"></param>
        /// <returns></returns>
        PaginationyMenuModel GetRoleMenu(string roleid);
        /// <summary>
        /// 菜单赋值
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel AddUpdateRoleMenu(UpdateRoleMenu model);
        /// <summary>
        /// 菜单树
        /// </summary>
        /// <returns></returns>
        PaginationyMenuModel MenuTree();
        /// <summary>
        /// 菜单下拉列表
        /// </summary>
        /// <returns></returns>
        ReturnValueModel MenuSelect();
        #endregion
    }
}
